package com.hmsm.server.util;

import java.sql.Timestamp;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import com.alibaba.fastjson.JSON;

/** 
 *  @描述:
 *  @作者     :shu jun
 *  @创建日期 :2014年9月5日 上午11:47:23  
 **/
public class JsonUtil {
	
	/**
	 * 
	 *  @描述:将obj转换成对象
	 *  @方法名称 :objToJson
	 *  @作者     :shu jun
	 *  @创建日期 :2014年9月5日 上午11:49:31 
	 *  @param obj
	 *  @return
	 *
	 */
	public String objToJson(Object obj,String dateFormat){
		StringBuffer sb = new StringBuffer();
		ReflectBeanHelp reflectBeanHelp = new ReflectBeanHelp();
		// 获取对象的所有属性名称和值
		Map<String, Object> fieldAll = reflectBeanHelp.getJavaBeanFieldAll(obj);
		Iterator<Entry<String, Object>> it = fieldAll.entrySet().iterator();
		sb.append("{");
		Util u = new Util();
		while (it.hasNext()) {
			Entry<String, Object> entry = it.next();
			// 如果值不为null，那么赋值
			String key = entry.getKey();
			Object value = entry.getValue();
			String val = "";
			if(sb.length()>1){
				sb.append(",");
			}
			if(value!=null){
				if(value instanceof Date){
					val = u.getFormatDate((Date)value,dateFormat);
				}else if(value instanceof Timestamp){
					val = u.getFormatDate((Timestamp)value,dateFormat);
				}else{
					val = value.toString();
				}
			}
			sb.append("\""+key+"\":\""+val+"\"");
		}
		sb.append("}");
		return sb.toString();
	}

	/**
	 *  @Description:Object对象转换为JSON字符串
	 *  @MethodName :object2String
	 *  @Author     :fengtao
	 *  @CreateDate :2013-6-26 下午04:16:57 
	 *  @param obj
	 *  @return
	 **/
	public static String object2String(Object obj) {
		if (obj == null) {
			return "\"\"";
		} else {
			//单引号类型的JSON字符串
			//return JSON.toJSONString(obj, SerializerFeature.UseSingleQuotes);
			//双引号
			return JSON.toJSONString(obj);
		}
	}
	
	/**
	 *  @Description:JSON字符串转换为Bean对象
	 *  @MethodName :json2Bean
	 *  @Author     :fengtao
	 *  @CreateDate :2013-6-26 下午04:15:59 
	 *  @param <T>
	 *  @param json
	 *  @param T
	 *  @return
	 **/
	public static <T> T json2Bean(String json, Class<T> T){
		return JSON.parseObject(json, T);
	}
	
	/**
	 *  @Description:JSON字符串转换为List集合
	 *  @MethodName :json2List
	 *  @Author     :fengtao
	 *  @CreateDate :2013-6-26 下午04:15:24 
	 *  @param <T>
	 *  @param json
	 *  @param T
	 *  @return
	 **/
	public static <T> List<T> json2List(String json, Class<T> T){
		return JSON.parseArray(json, T);
	}
	
}
